home *** CD-ROM | disk | FTP | other *** search
/ Aminet 6 / Aminet 6 - June 1995.iso / Aminet / dev / e / capus2.lha / capus2 / WhatView / Sources / WVPrefs.e < prev    next >
Encoding:
Text File  |  1995-04-04  |  30.1 KB  |  755 lines

  1. /*==================================================*/
  2. /* Source code generate by Gui2E v0.1 © 1994 NasGûl */
  3. /*==================================================*/
  4.  
  5. /*======<<< Peps Header >>>======
  6.  PRGVERSION '0'
  7.  ================================
  8.  PRGREVISION '13'
  9.  ================================
  10.  AUTHOR      'NasGûl'
  11.  ===============================*/
  12. /*==============================
  13.  20-09-94 - mise au format (font ecran).
  14.  05-10-94 - ajout des subtypes.
  15.  15-02-95 - s'ouvre sur l'écran public par défaut.
  16.  12-03-95 - Edition des icônes par défaut.
  17.  02-04-95 - Localisation.
  18.  ===============================*/
  19. OPT OSVERSION=37
  20.  
  21. MODULE 'intuition/intuition','gadtools','libraries/gadtools','intuition/gadgetclass','intuition/screens',
  22.        'graphics/text','exec/lists','exec/nodes','exec/ports','eropenlib','utility/tagitem',
  23.        'intuition/intuitionbase'
  24. MODULE 'whatis','wvprefs'
  25. MODULE 'asl','libraries/asl','utility'
  26. MODULE 'wb','exec/execbase','exec/libraries','dos/var'
  27. MODULE 'mheader'
  28.  
  29. ENUM ER_NONE,ER_LOCKSCREEN,ER_VISUAL,ER_CONTEXT,ER_MENUS,ER_GADGET,ER_WINDOW,
  30.      ER_MEM
  31. RAISE ER_MEM IF New()=NIL,
  32.       ER_MEM IF String()=NIL
  33.  
  34. CONST LOAD_PREFS=0,
  35.       SAVE_PREFS=1
  36.  
  37. CONST DEBUG=FALSE
  38.  
  39. DEF screen:PTR TO screen,
  40.     visual=NIL,
  41.     tattr:PTR TO textattr,
  42.     reelquit=FALSE,
  43.     offy,offx
  44. /*======================================
  45.  = wp Definitions
  46.  ======================================*/
  47. DEF wp_window=NIL:PTR TO window
  48. DEF wp_menu
  49. DEF wp_glist
  50. /* Gadgets */
  51. ENUM GA_G_COMMAND,GA_G_GETCOMMAND,GA_G_EXECTYPE,
  52.      GA_G_STACK,GA_G_PRI,GA_G_LOAD,GA_G_SAVE,
  53.      GA_G_SAVEAS,GA_G_ADD,GA_G_REM,GA_G_IDLIST,
  54.      GA_G_ACTIONLIST,GA_GA_G_PARENTTYPE,GA_G_USEPARENTTYPE
  55.  
  56. /* Gadgets labels of wp */
  57. DEF g_command,g_getcommand,g_exectype,
  58.     g_stack,g_pri,g_load,g_save,g_saveas,
  59.     g_add,g_rem,g_idlist,g_actionlist,g_parenttype,g_useparenttype
  60. /* Application def       */
  61. DEF mywvbase:PTR TO wvbase
  62. DEF curidnode=0
  63. DEF curactionnode=0
  64. DEF defdir[256]:STRING
  65. DEF icdir[256]:STRING
  66. DEF defact=-1
  67.  
  68. PMODULE 'Pmodules:Plist/p_DoUpNode'
  69. PMODULE 'WVPrefsData'
  70. PMODULE 'WhatView_Cat'
  71. PMODULE 'PModules:PMHeader'
  72. /********************************************************************************
  73.  * Fichier      : DWriteF.e
  74.  * Procédures   : dWriteF(PTR TO LONG,PTR TO LONG)
  75.  * Informations : WriteF() if DEBUG=TRUE
  76.  *******************************************************************************/
  77. /*"Window Proc"*/
  78. /*"p_SetUpScreen()"*/
  79. PROC p_SetUpScreen() HANDLE 
  80.     DEF pt:PTR TO textattr
  81.     dWriteF(['p_SetUpScreen()\n'],[0])
  82.     IF (screen:=LockPubScreen(p_LockActivePubScreen()))=NIL THEN Raise(ER_LOCKSCREEN)
  83.     IF (visual:=GetVisualInfoA(screen,NIL))=NIL THEN Raise(ER_VISUAL)
  84.     offy:=screen.wbortop+Int(screen.rastport+58)-10
  85.     pt:=screen.font
  86.     IF pt.ysize<=8
  87.         tattr:=[pt.name,pt.ysize,0,0]:textattr
  88.     ELSE
  89.         tattr:=['topaz.font',8,0,0]:textattr
  90.     ENDIF
  91.     Raise(ER_NONE)
  92. EXCEPT
  93.     RETURN exception
  94. ENDPROC
  95. /**/
  96. /*"p_SetDownScreen()"*/
  97. PROC p_SetDownScreen() 
  98.     dWriteF(['p_SetDownScreen()\n'],[0])
  99.     IF visual THEN FreeVisualInfo(visual)
  100.     IF screen THEN UnlockPubScreen(NIL,screen)
  101. ENDPROC
  102. /**/
  103. /*"p_LockActivePubScreen()"*/
  104. PROC p_LockActivePubScreen()
  105.     DEF ps:PTR TO pubscreennode
  106.     DEF s:PTR TO screen
  107.     DEF sn:PTR TO ln
  108.     DEF psl:PTR TO lh
  109.     DEF ret=NIL
  110.     DEF myintui:PTR TO intuitionbase
  111.     ret:=NIL
  112.     myintui:=intuitionbase
  113.     s:=myintui.activescreen
  114.     IF psl:=LockPubScreenList()
  115.         sn:=psl.head
  116.         WHILE sn
  117.             ps:=sn
  118.             IF sn.succ<>0
  119.                 IF ps.screen=s THEN ret:=sn.name
  120.             ENDIF
  121.             sn:=sn.succ
  122.         ENDWHILE
  123.         UnlockPubScreenList()
  124.     ENDIF
  125.     RETURN ret
  126. ENDPROC
  127. /**/
  128. /*"p_InitwpWindow()"*/
  129. PROC p_InitwpWindow() HANDLE 
  130.     DEF g:PTR TO gadget
  131.     dWriteF(['p_InitwpWindow()\n'],[0])
  132.     IF (g:=CreateContext({wp_glist}))=NIL THEN Raise(ER_CONTEXT)
  133.     IF (wp_menu:=CreateMenusA([1,0,get_WhatView_string(MSGWVPREFS_MENU_DEFACT),0,0,0,0,
  134.                                2,0,get_WhatView_string(MSGWVPREFS_MENU_OPENWIN),'O',257,30,0,
  135.                                2,0,get_WhatView_string(MSGWVPREFS_MENU_WHATVIEW),'W',$1,29,0,
  136.                                2,0,get_WhatView_string(MSGWVPREFS_MENU_INFO),'I',$1,27,0,
  137.                                2,0,get_WhatView_string(MSGWVPREFS_MENU_ADDICON),'A',$1,23,0,
  138.                                2,0,get_WhatView_string(MSGWVPREFS_MENU_EXECUTE),'E',$1,15,0,
  139.                                2,0,get_WhatView_string(MSGWVPREFS_MENU_QUIT),'Q',$0,0,0,
  140.                                1,0,get_WhatView_string(MSGWVPREFS_MENU_UTILS),0,0,0,0,
  141.                                2,0,get_WhatView_string(MSGWVPREFS_MENU_EDITICON),'C',0,0,0,
  142.                                    0,0,0,0,0,0,0]:newmenu,NIL))=NIL THEN Raise(ER_MENUS)
  143.     IF LayoutMenusA(wp_menu,visual,NIL)=FALSE THEN Raise(ER_MENUS)
  144.     IF (g_command:=CreateGadgetA(TEXT_KIND,g,[offx+88,offy+19,181,12,get_WhatView_string(MSGWVPREFS_GAD_COMMANDE),tattr,0,1,visual,0]:newgadget,[GTTX_BORDER,TRUE,GTTX_TEXT,'',GT_UNDERSCORE,"_",TAG_DONE]))=NIL THEN Raise(ER_GADGET)
  145.     dWriteF(['g_command\n'],[0])
  146.     IF (g_getcommand:=CreateGadgetA(BUTTON_KIND,g_command,[offx+269,offy+19,41,12,'?',tattr,1,16,visual,0]:newgadget,[GA_RELVERIFY,TRUE,GA_DISABLED,FALSE,GT_UNDERSCORE,"_",TAG_DONE]))=NIL THEN Raise(ER_GADGET)
  147.     dWriteF(['g_getcommand\n'],[0])
  148.     IF (g_exectype:=CreateGadgetA(CYCLE_KIND,g_getcommand,[offx+88,offy+32,221,12,get_WhatView_string(MSGWVPREFS_GAD_EXECTYPE),tattr,2,1,visual,0]:newgadget,[GA_RELVERIFY,TRUE,GTCY_LABELS,['Mode WB','Mode CLI',0],GT_UNDERSCORE,"_",TAG_DONE]))=NIL THEN Raise(ER_GADGET)
  149.     dWriteF(['g_exectype\n'],[0])
  150.     IF (g_stack:=CreateGadgetA(INTEGER_KIND,g_exectype,[offx+218,offy+45,91,12,get_WhatView_string(MSGWVPREFS_GAD_STACK),tattr,3,1,visual,0]:newgadget,[GTIN_NUMBER,NIL,GT_UNDERSCORE,"_",TAG_DONE]))=NIL THEN Raise(ER_GADGET)
  151.     dWriteF(['g_stack\n'],[0])
  152.     IF (g_pri:=CreateGadgetA(INTEGER_KIND,g_stack,[offx+88,offy+45,77,12,get_WhatView_string(MSGWVPREFS_GAD_PRI),tattr,4,1,visual,0]:newgadget,[GTIN_NUMBER,NIL,GA_RELVERIFY,TRUE,GT_UNDERSCORE,"_",TAG_DONE]))=NIL THEN Raise(ER_GADGET)
  153.     dWriteF(['g_pri\n'],[0])
  154.     IF (g_load:=CreateGadgetA(BUTTON_KIND,g_pri,[offx+16,offy+63,81,12,get_WhatView_string(MSGWVPREFS_GAD_LOAD),tattr,5,16,visual,0]:newgadget,[GA_RELVERIFY,TRUE,GA_DISABLED,FALSE,GT_UNDERSCORE,"_",TAG_DONE]))=NIL THEN Raise(ER_GADGET)
  155.     dWriteF(['g_load\n'],[0])
  156.     IF (g_save:=CreateGadgetA(BUTTON_KIND,g_load,[offx+122,offy+63,81,12,get_WhatView_string(MSGWVPREFS_GAD_SAVE),tattr,6,16,visual,0]:newgadget,[GA_RELVERIFY,TRUE,GA_DISABLED,FALSE,GT_UNDERSCORE,"_",TAG_DONE]))=NIL THEN Raise(ER_GADGET)
  157.     dWriteF(['g_save\n'],[0])
  158.     IF (g_saveas:=CreateGadgetA(BUTTON_KIND,g_save,[offx+229,offy+63,81,12,get_WhatView_string(MSGWVPREFS_GAD_SAVEAS),tattr,7,16,visual,0]:newgadget,[GA_RELVERIFY,TRUE,GA_DISABLED,FALSE,GT_UNDERSCORE,"_",TAG_DONE]))=NIL THEN Raise(ER_GADGET)
  159.     dWriteF(['g_saveas\n'],[0])
  160.     IF (g_add:=CreateGadgetA(BUTTON_KIND,g_saveas,[offx+56,offy+81,81,12,get_WhatView_string(MSGWVPREFS_GAD_ADD),tattr,8,16,visual,0]:newgadget,[GA_RELVERIFY,TRUE,GA_DISABLED,FALSE,GT_UNDERSCORE,"_",TAG_DONE]))=NIL THEN Raise(ER_GADGET)
  161.     dWriteF(['g_add\n'],[0])
  162.     IF (g_rem:=CreateGadgetA(BUTTON_KIND,g_add,[offx+188,offy+81,81,12,get_WhatView_string(MSGWVPREFS_GAD_REM),tattr,9,16,visual,0]:newgadget,[GA_RELVERIFY,TRUE,GA_DISABLED,FALSE,GT_UNDERSCORE,"_",TAG_DONE]))=NIL THEN Raise(ER_GADGET)
  163.     dWriteF(['g_rem\n'],[0])
  164.     IF (g_idlist:=CreateGadgetA(LISTVIEW_KIND,g_rem,[offx+28,offy+106,110,41,get_WhatView_string(MSGWVPREFS_GAD_ID),tattr,10,4,visual,0]:newgadget,[GA_IMMEDIATE,TRUE,GTLV_SHOWSELECTED,NIL,GTLV_LABELS,NIL,GT_UNDERSCORE,"_",TAG_DONE]))=NIL THEN Raise(ER_GADGET)
  165.     dWriteF(['g_idlist\n'],[0])
  166.     IF (g_actionlist:=CreateGadgetA(LISTVIEW_KIND,g_idlist,[offx+176,offy+106,110,41,get_WhatView_string(MSGWVPREFS_GAD_ACTION),tattr,11,4,visual,0]:newgadget,[GA_IMMEDIATE,TRUE,GTLV_SHOWSELECTED,NIL,GTLV_LABELS,NIL,GT_UNDERSCORE,"_",TAG_DONE]))=NIL THEN Raise(ER_GADGET)
  167.     dWriteF(['g_actionlist\n'],[0])
  168.     IF (g_parenttype:=CreateGadgetA(TEXT_KIND,g_actionlist,[offx+119,offy+152,181,12,get_WhatView_string(MSGWVPREFS_GAD_PARENTTYPE),tattr,12,1,visual,0]:newgadget,[GTTX_BORDER,1,GTTX_TEXT,'',GTTX_COPYTEXT,FALSE,GT_UNDERSCORE,"_",TAG_DONE]))=NIL THEN Raise(ER_GADGET)
  169.     IF (g_useparenttype:=CreateGadgetA(CHECKBOX_KIND,g_parenttype,[offx+274,offy+167,26,11,get_WhatView_string(MSGWVPREFS_GAD_USEPT),tattr,13,1,visual,0]:newgadget,[GA_RELVERIFY,TRUE,GTCB_CHECKED,FALSE,GT_UNDERSCORE,"_",TAG_DONE]))=NIL THEN Raise(ER_GADGET)
  170.     Raise(ER_NONE)
  171. EXCEPT
  172.     RETURN exception
  173. ENDPROC
  174. /**/
  175. /*"p_RenderwpWindow()"*/
  176. PROC p_RenderwpWindow() 
  177.     DEF infonode:PTR TO actionnode
  178.     DEF n:PTR TO ln
  179.     DEF ty,pty,pidstr[9]:STRING
  180.     dWriteF(['p_RenderwpWindow()\n'],[0])
  181.     p_CheckGoodItem(defact)
  182.     IF (p_EmptyList(mywvbase.adractionlist))<>-1
  183.         infonode:=p_GetAdrNode(mywvbase.adractionlist,curactionnode)
  184.         n:=infonode
  185.         ty:=GetIDType(n.name)
  186.         pty:=ParentFileType(ty)
  187.         Gt_SetGadgetAttrsA(g_command,wp_window,NIL,[GA_DISABLED,FALSE,GTTX_BORDER,TRUE,GTTX_TEXT,infonode.command,TAG_DONE])
  188.         Gt_SetGadgetAttrsA(g_getcommand,wp_window,NIL,[GA_DISABLED,FALSE,TAG_DONE])
  189.         Gt_SetGadgetAttrsA(g_exectype,wp_window,NIL,[GA_DISABLED,FALSE,GTCY_ACTIVE,infonode.exectype,TAG_DONE])
  190.         Gt_SetGadgetAttrsA(g_stack,wp_window,NIL,[GA_DISABLED,FALSE,GTIN_NUMBER,infonode.stack,TAG_DONE])
  191.         Gt_SetGadgetAttrsA(g_pri,wp_window,NIL,[GA_DISABLED,FALSE,GTIN_NUMBER,infonode.priority,TAG_DONE])
  192.         Gt_SetGadgetAttrsA(g_actionlist,wp_window,NIL,[GA_DISABLED,FALSE,GTLV_SHOWSELECTED,TRUE,GTLV_SELECTED,curactionnode,GTLV_LABELS,mywvbase.adractionlist,TAG_DONE])
  193.         Gt_SetGadgetAttrsA(g_rem,wp_window,NIL,[GA_DISABLED,FALSE,TAG_DONE])
  194.         IF pty
  195.             pidstr:=GetIDString(pty)
  196.             Gt_SetGadgetAttrsA(g_parenttype,wp_window,NIL,[GA_DISABLED,FALSE,GTTX_TEXT,pidstr,TAG_DONE])
  197.             Gt_SetGadgetAttrsA(g_useparenttype,wp_window,NIL,[GA_DISABLED,FALSE,GTCB_CHECKED,infonode.usesubtype,TAG_DONE])
  198.         ELSE
  199.             Gt_SetGadgetAttrsA(g_parenttype,wp_window,NIL,[GA_DISABLED,FALSE,GTTX_TEXT,'Aucun.',TAG_DONE])
  200.             Gt_SetGadgetAttrsA(g_useparenttype,wp_window,NIL,[GA_DISABLED,TRUE,GTCB_CHECKED,FALSE,TAG_DONE])
  201.         ENDIF
  202.     ELSE
  203.         Gt_SetGadgetAttrsA(g_command,wp_window,NIL,[GA_DISABLED,TRUE,GTTX_BORDER,TRUE,GTTX_TEXT,'',TAG_DONE])
  204.         Gt_SetGadgetAttrsA(g_getcommand,wp_window,NIL,[GA_DISABLED,TRUE,TAG_DONE])
  205.         Gt_SetGadgetAttrsA(g_exectype,wp_window,NIL,[GA_DISABLED,TRUE,TAG_DONE])
  206.         Gt_SetGadgetAttrsA(g_stack,wp_window,NIL,[GA_DISABLED,TRUE,GTIN_NUMBER,NIL,TAG_DONE])
  207.         Gt_SetGadgetAttrsA(g_pri,wp_window,NIL,[GA_DISABLED,TRUE,GTIN_NUMBER,NIL,TAG_DONE])
  208.         Gt_SetGadgetAttrsA(g_actionlist,wp_window,NIL,[GA_DISABLED,TRUE,GTLV_SHOWSELECTED,NIL,GTLV_LABELS,mywvbase.adremptylist,TAG_DONE])
  209.         Gt_SetGadgetAttrsA(g_rem,wp_window,NIL,[GA_DISABLED,TRUE,TAG_DONE])
  210.         Gt_SetGadgetAttrsA(g_parenttype,wp_window,NIL,[GA_DISABLED,TRUE,GTTX_TEXT,'',TAG_DONE])
  211.         Gt_SetGadgetAttrsA(g_parenttype,wp_window,NIL,[GA_DISABLED,TRUE,TAG_DONE])
  212.     ENDIF
  213.     Gt_SetGadgetAttrsA(g_idlist,wp_window,NIL,[GTLV_SHOWSELECTED,TRUE,GTLV_SELECTED,curidnode,GTLV_LABELS,mywvbase.adridlist,TAG_DONE])
  214.     DrawBevelBoxA(wp_window.rport,offx+9,offy+61,305,16,[GT_VISUALINFO,visual,TAG_DONE])
  215.     DrawBevelBoxA(wp_window.rport,offx+9,offy+13,305,46,[GT_VISUALINFO,visual,TAG_DONE])
  216.     DrawBevelBoxA(wp_window.rport,offx+9,offy+79,305,68,[GT_VISUALINFO,visual,TAG_DONE])
  217.     DrawBevelBoxA(wp_window.rport,offx+9,offy+147,305,33,[GT_VISUALINFO,visual,TAG_DONE,0])
  218.     RefreshGList(g_command,wp_window,NIL,-1)
  219.     Gt_RefreshWindow(wp_window,NIL)
  220. ENDPROC
  221. /**/
  222. /*"p_OpenwpWindow()"*/
  223. PROC p_OpenwpWindow() HANDLE 
  224.     dWriteF(['p_OpenwvWindow()\n'],[0])
  225.     IF (wp_window:=OpenWindowTagList(NIL,
  226.                       [WA_LEFT,10,
  227.                        WA_TOP,10,
  228.                        WA_WIDTH,offx+319,
  229.                        WA_HEIGHT,offy+183,
  230.                        WA_IDCMP,$400278+IDCMP_MENUPICK,
  231.                        WA_FLAGS,$102E,
  232.                        WA_GADGETS,wp_glist,
  233.                        WA_CUSTOMSCREEN,screen,
  234.                        WA_TITLE,title_req,
  235.                        WA_SCREENTITLE,'Made With GadToolsBox v2.0 © 1991-1993',
  236.                        TAG_DONE]))=NIL THEN Raise(ER_WINDOW)
  237.     IF SetMenuStrip(wp_window,wp_menu)=FALSE THEN Raise(ER_MENUS)
  238.     p_RenderwpWindow()
  239.     p_CheckGoodItem(defact)
  240.     Raise(ER_NONE)
  241. EXCEPT
  242.     RETURN exception
  243. ENDPROC
  244. /**/
  245. /*"p_RemwpWindow()"*/
  246. PROC p_RemwpWindow() 
  247.     dWriteF(['p_RemwvWindow()\n'],[0])
  248.     IF wp_window THEN CloseWindow(wp_window)
  249.     IF wp_menu THEN FreeMenus(wp_menu)
  250.     IF wp_glist THEN FreeGadgets(wp_glist)
  251. ENDPROC
  252. /**/
  253. /*"p_LockListView()"*/
  254. PROC p_LockListView() 
  255.     dWriteF(['p_LockListView()\n'],[0])
  256.     Gt_SetGadgetAttrsA(g_actionlist,wp_window,NIL,[GTLV_LABELS,-1,TAG_DONE])
  257. ENDPROC
  258. /**/
  259. /*"p_CheckGoodItem(a)"*/
  260. PROC p_CheckGoodItem(a) 
  261.     DEF adr_item:PTR TO menuitem
  262.     DEF test=NIL
  263.     DEF menu:PTR TO LONG,b
  264.     menu:=[$F800,$F820,$F840,$F860,$F880]
  265.     FOR b:=0 TO 4
  266.         adr_item:=ItemAddress(wp_menu,menu[b])
  267.         IF adr_item.flags=$157
  268.             IF defact<>(b-1)
  269.                 adr_item.flags:=$57
  270.             ENDIF
  271.         ENDIF
  272.     ENDFOR
  273.     SELECT a
  274.         CASE -1
  275.             adr_item:=ItemAddress(wp_menu,$F800)
  276.         CASE  0
  277.             adr_item:=ItemAddress(wp_menu,$F820)
  278.         CASE  1
  279.             adr_item:=ItemAddress(wp_menu,$F840)
  280.         CASE  2
  281.             adr_item:=ItemAddress(wp_menu,$F860)
  282.         CASE  3
  283.             adr_item:=ItemAddress(wp_menu,$F880)
  284.     ENDSELECT
  285.     IF (test:=(adr_item.flags AND CHECKED))=FALSE
  286.         adr_item.flags:=adr_item.flags+CHECKED
  287.     ENDIF
  288. ENDPROC
  289. /**/
  290. /**/
  291. /*"Message proc"*/
  292. /*"p_LookAllMessage()"*/
  293. PROC p_LookAllMessage() 
  294.     DEF sigreturn
  295.     DEF wpport:PTR TO mp
  296.     IF wp_window THEN wpport:=wp_window.userport ELSE wpport:=NIL
  297.     sigreturn:=Wait(Shl(1,wpport.sigbit) OR
  298.                     $F000)
  299.     IF (sigreturn AND Shl(1,wpport.sigbit))
  300.         p_LookwpMessage()
  301.     ENDIF
  302.     IF (sigreturn AND $F000)
  303.         reelquit:=TRUE
  304.     ENDIF
  305. ENDPROC
  306. /**/
  307. /*"p_LookwpMessage()"*/
  308. PROC p_LookwpMessage() 
  309.    DEF mes:PTR TO intuimessage
  310.    DEF g:PTR TO gadget
  311.    DEF gstr:PTR TO stringinfo
  312.    DEF type=0,infos=NIL
  313.    DEF actnode:PTR TO actionnode,usesb
  314.    DEF myreq:requester
  315.    WHILE (mes:=Gt_GetIMsg(wp_window.userport))
  316.        type:=mes.class
  317.        SELECT type
  318.            CASE IDCMP_MENUPICK
  319.               infos:=mes.code
  320.               SELECT infos
  321.                   CASE $F800 /* OPENWIN (def) */
  322.                       defact:=-1
  323.                       p_SavePrefsFile(mywvbase.adractionlist,'Env:WhatView.Prefs')
  324.                   CASE $F820 /* WHATVIEW */
  325.                       defact:=0
  326.                       p_SavePrefsFile(mywvbase.adractionlist,'Env:WhatView.Prefs')
  327.                   CASE $F840 /* INFO */
  328.                       defact:=1
  329.                       p_SavePrefsFile(mywvbase.adractionlist,'Env:WhatView.Prefs')
  330.                   CASE $F860 /* ADDICON */
  331.                       defact:=2
  332.                       p_SavePrefsFile(mywvbase.adractionlist,'Env:WhatView.Prefs')
  333.                   CASE $F880 /* EXECUTE */
  334.                       defact:=3
  335.                       p_SavePrefsFile(mywvbase.adractionlist,'Env:WhatView.Prefs')
  336.                   CASE $F8A0 /* QUIT */
  337.                       reelquit:=TRUE
  338.                   CASE $F801 /* EditIcon */
  339.                     IF p_EmptyList(mywvbase.adractionlist)<>-1 
  340.                         IF beginWait(wp_window,myreq)
  341.                             p_GetIconInfo(curactionnode)
  342.                             endWait(wp_window,myreq)
  343.                         ENDIF
  344.                     ENDIF
  345.               ENDSELECT
  346.            CASE IDCMP_CLOSEWINDOW
  347.               reelquit:=TRUE
  348.            CASE IDCMP_GADGETDOWN
  349.               type:=IDCMP_GADGETUP
  350.            CASE IDCMP_GADGETUP
  351.               g:=mes.iaddress
  352.               infos:=g.gadgetid
  353.               SELECT infos
  354.                   CASE GA_G_COMMAND
  355.                   CASE GA_G_GETCOMMAND
  356.                       p_LockListView()
  357.                       p_FileRequester(curactionnode,NIL)
  358.                       p_RenderwpWindow()
  359.                   CASE GA_G_EXECTYPE
  360.                       actnode:=p_GetAdrNode(mywvbase.adractionlist,curactionnode)
  361.                       actnode.exectype:=mes.code
  362.                       IF actnode.exectype=MODE_WB
  363.                           IF p_NoIcon(actnode.currentdir,actnode.command)=TRUE 
  364.                               EasyRequestArgs(0,[20,0,0,get_WhatView_string(MSGWVPREFS_REQ_EXECNOICON),get_WhatView_string(MSGWHATVIEW_COMASS_GAD)],0,[actnode.command])
  365.                               /*
  366.                               actnode.exectype:=MODE_CLI
  367.                               Gt_SetGadgetAttrsA(g_exectype,wp_window,NIL,[GA_DISABLED,FALSE,GTCY_ACTIVE,actnode.exectype,TAG_DONE])
  368.                               p_RenderwpWindow()
  369.                               */
  370.                           ENDIF
  371.                       ENDIF
  372.                   CASE GA_G_STACK
  373.                       gstr:=g.specialinfo
  374.                       actnode:=p_GetAdrNode(mywvbase.adractionlist,curactionnode)
  375.                       actnode.stack:=Val(gstr.buffer,NIL)
  376.                   CASE GA_G_PRI
  377.                       gstr:=g.specialinfo
  378.                       actnode:=p_GetAdrNode(mywvbase.adractionlist,curactionnode)
  379.                       actnode.stack:=Val(gstr.buffer,NIL)
  380.                   CASE GA_G_LOAD
  381.                       p_LockListView()
  382.                       p_FileRequester(-1,LOAD_PREFS)
  383.                       p_RenderwpWindow()
  384.                   CASE GA_G_SAVE
  385.                       p_LockListView()
  386.                       p_SavePrefsFile(mywvbase.adractionlist,'Env:WhatView.Prefs')
  387.                       p_SavePrefsFile(mywvbase.adractionlist,'Envarc:WhatView.Prefs')
  388.                       p_RenderwpWindow()
  389.                   CASE GA_G_SAVEAS
  390.                       p_LockListView()
  391.                       p_FileRequester(-1,SAVE_PREFS)
  392.                       p_RenderwpWindow()
  393.                   CASE GA_G_ADD
  394.                       p_LockListView()
  395.                       p_AjouteActionNode(curidnode,mywvbase.adractionlist)
  396.                       p_RenderwpWindow()
  397.                   CASE GA_G_REM
  398.                       p_LockListView()
  399.                       curactionnode:=p_EnleveActionNode(mywvbase.adractionlist,curactionnode)
  400.                       p_RenderwpWindow()
  401.                   CASE GA_G_IDLIST
  402.                       curidnode:=mes.code
  403.                   CASE GA_G_ACTIONLIST
  404.                       curactionnode:=mes.code
  405.                       p_RenderwpWindow()
  406.                   CASE GA_G_USEPARENTTYPE
  407.                       actnode:=p_GetAdrNode(mywvbase.adractionlist,curactionnode)
  408.                       actnode.usesubtype:=mes.code
  409.               ENDSELECT
  410.        ENDSELECT
  411.        Gt_ReplyIMsg(mes)
  412.    ENDWHILE
  413. ENDPROC
  414. /**/
  415. /**/
  416. /*"Application proc"*/
  417. /*"p_InitWVAPP()"*/
  418. PROC p_InitWVAPP() HANDLE 
  419.     dWriteF(['p_InitWVAPP()\n'],[0])
  420.     mywvbase:=New(SIZEOF wvbase)
  421.     mywvbase.adridlist:=p_InitList()
  422.     mywvbase.adractionlist:=p_InitList()
  423.     mywvbase.adremptylist:=p_InitList()
  424.     p_AjouteNode(mywvbase.adremptylist,'')
  425.     Raise(p_BuildIdList())
  426.     Raise(ER_NONE)
  427. EXCEPT
  428.     RETURN exception
  429. ENDPROC
  430. /**/
  431. /*"p_RemWVAPP()"*/
  432. PROC p_RemWVAPP() 
  433.     dWriteF(['p_RemWVAPP()\n'],[0])
  434.     IF mywvbase.adridlist THEN p_RemoveList(mywvbase.adridlist)
  435.     IF mywvbase.adremptylist THEN p_RemoveList(mywvbase.adremptylist)
  436.     IF mywvbase.adractionlist THEN p_RemoveActionList(mywvbase.adractionlist,TRUE)
  437.     IF mywvbase THEN Dispose(mywvbase)
  438. ENDPROC
  439. /**/
  440. /*"p_BuildIdList()"*/
  441. PROC p_BuildIdList() 
  442. /********************************************************************************
  443.  * Para         : NONE
  444.  * Return       : NONE
  445.  * Description  : Clean the ListView and rebuild it with all filetype (whatis.library).
  446.  *******************************************************************************/
  447.     DEF next
  448.     DEF id_str[9]:STRING
  449.     DEF my_string[256]:STRING
  450.     dWriteF(['p_BuildIdList()\n'],[0])
  451.     mywvbase.adridlist:=p_CleanList(mywvbase.adridlist)
  452.     next:=FirstType()
  453.     WHILE next
  454.         id_str:=GetIDString(next)
  455.         StringF(my_string,'\s',id_str)
  456.         p_AjouteNode(mywvbase.adridlist,my_string)
  457.         next:=NextType(next)
  458.     ENDWHILE
  459.     RETURN ER_NONE
  460. ENDPROC
  461. /**/
  462. /*"p_FileRequester(numactnode,action)"*/
  463. PROC p_FileRequester(numactnode,action) 
  464.   DEF fichier[256]:STRING
  465.   DEF dossier[256]:STRING
  466.   DEF piv_string[256]:STRING
  467.   DEF reqload:PTR TO filerequestr
  468.   DEF mnode:PTR TO actionnode
  469.   DEF r
  470.   IF reqload:=AllocAslRequest(ASL_FILEREQUEST,[ASL_OKTEXT,'Ok',ASL_DIR,defdir,0])
  471.       IF RequestFile(reqload)
  472.           StringF(dossier,'\s',reqload.dir)
  473.           StringF(defdir,'\s',reqload.dir)
  474.           StringF(fichier,'\s',reqload.file)
  475.       ELSE
  476.       ENDIF
  477.       FreeAslRequest(reqload)
  478.   ELSE
  479.      RETURN FALSE
  480.   ENDIF
  481.   IF numactnode<>-1
  482.       mnode:=p_GetAdrNode(mywvbase.adractionlist,numactnode)
  483.       IF mnode.command THEN DisposeLink(mnode.command)
  484.       mnode.command:=String(EstrLen(fichier))
  485.       StrCopy(mnode.command,fichier,ALL)
  486.       IF (r:=p_NoIcon(dossier,fichier))=TRUE THEN mnode.exectype:=MODE_CLI
  487.       IF mnode.currentdir THEN DisposeLink(mnode.currentdir)
  488.       mnode.currentdir:=String(EstrLen(dossier))
  489.       StrCopy(mnode.currentdir,dossier,ALL)
  490.   ELSE
  491.       SELECT action
  492.         CASE LOAD_PREFS
  493.           AddPart(dossier,'',256)
  494.           StringF(piv_string,'\s\s',dossier,fichier)
  495.           p_ReadPrefsFile(piv_string)
  496.         CASE SAVE_PREFS
  497.           AddPart(dossier,'',256)
  498.           StringF(piv_string,'\s\s',dossier,fichier)
  499.           p_SavePrefsFile(mywvbase.adractionlist,piv_string)
  500.       ENDSELECT
  501.   ENDIF
  502. ENDPROC
  503. /**/
  504. /*"p_SavePrefsFile(list:PTR TO lh,fichier)"*/
  505. PROC p_SavePrefsFile(list:PTR TO lh,fichier) 
  506.     DEF sactnode:PTR TO actionnode
  507.     DEF node:PTR TO ln
  508.     DEF h
  509.     dWriteF(['p_SavePrefsFile()\n'],[0])
  510.     IF h:=Open(fichier,1006)
  511.         Write(h,[ID_WVPR]:LONG,4)
  512.         sactnode:=list.head
  513.         WHILE sactnode
  514.             node:=sactnode
  515.             IF node.succ<>0
  516.                 Write(h,[ID_WVAC]:LONG,4)
  517.                 Write(h,[sactnode.exectype]:INT,2)
  518.                 Write(h,[sactnode.stack]:LONG,4)
  519.                 Write(h,[sactnode.priority]:INT,2)
  520.                 Write(h,[sactnode.usesubtype]:INT,2)
  521.                 Write(h,node.name,EstrLen(node.name))
  522.                 IF Even(EstrLen(node.name))
  523.                     Out(h,0)
  524.                     Out(h,0)
  525.                 ELSE
  526.                     Out(h,0)
  527.                 ENDIF
  528.                 Write(h,sactnode.command,EstrLen(sactnode.command))
  529.                 IF Even(EstrLen(sactnode.command))
  530.                     Out(h,0)
  531.                     Out(h,0)
  532.                 ELSE
  533.                     Out(h,0)
  534.                 ENDIF
  535.                 Write(h,sactnode.currentdir,EstrLen(sactnode.currentdir))
  536.                 IF Even(EstrLen(sactnode.currentdir))
  537.                     Out(h,0)
  538.                     Out(h,0)
  539.                 ELSE
  540.                     Out(h,0)
  541.                 ENDIF
  542.             ENDIF
  543.             sactnode:=node.succ
  544.         ENDWHILE
  545.         Write(h,[ID_DEFA]:LONG,4)
  546.         Write(h,[defact]:LONG,4)
  547.         IF h THEN Close(h)
  548.     ENDIF
  549. ENDPROC
  550. /**/
  551. /*"p_ReadPrefsFile(source)"*/
  552. PROC p_ReadPrefsFile(source) 
  553.     DEF len,a,adr,buf,handle,flen=TRUE,pos:PTR TO CHAR
  554.     DEF chunk
  555.     DEF pv[256]:STRING
  556.     DEF node:PTR TO ln
  557.     DEF addact:PTR TO actionnode
  558.     DEF list:PTR TO lh,nn=NIL
  559.     dWriteF(['p_readPrefsFile()\n'],[0])
  560.     IF (flen:=FileLength(source))=-1 THEN RETURN FALSE
  561.     IF (buf:=New(flen+1))=NIL THEN RETURN FALSE
  562.     IF (handle:=Open(source,1005))=NIL THEN RETURN FALSE
  563.     len:=Read(handle,buf,flen)
  564.     Close(handle)
  565.     IF len<1 THEN RETURN FALSE
  566.     adr:=buf
  567.     chunk:=Long(adr)
  568.     IF chunk<>ID_WVPR
  569.         Dispose(buf)
  570.         RETURN FALSE
  571.     ENDIF
  572.     p_RemoveActionList(mywvbase.adractionlist,FALSE)
  573.     FOR a:=0 TO len-1
  574.         pos:=adr++
  575.         IF Even(pos)
  576.             chunk:=Long(pos)
  577.             SELECT chunk
  578.                 CASE ID_WVAC
  579.                     pos:=pos+4
  580.                     node:=New(SIZEOF ln)
  581.                     addact:=New(SIZEOF actionnode)
  582.                     addact.exectype:=Int(pos)
  583.                     addact.stack:=Long(pos+2)
  584.                     addact.priority:=Int(pos+6)
  585.                     addact.usesubtype:=Int(pos+8)
  586.                     StringF(pv,'\s',pos+10)
  587.                     node.name:=String(EstrLen(pv))
  588.                     node.succ:=0
  589.                     StrCopy(node.name,pv,ALL)
  590.                     IF Even(EstrLen(pv))
  591.                         pos:=pos+10+EstrLen(pv)+2
  592.                     ELSE
  593.                         pos:=pos+10+EstrLen(pv)+1
  594.                     ENDIF
  595.                     StringF(pv,'\s',pos)
  596.                     addact.command:=String(EstrLen(pv))
  597.                     StrCopy(addact.command,pv,ALL)
  598.                     IF Even(EstrLen(pv))
  599.                         pos:=pos+EstrLen(pv)+2
  600.                     ELSE
  601.                         pos:=pos+EstrLen(pv)+1
  602.                     ENDIF
  603.                     StringF(pv,'\s',pos)
  604.                     addact.currentdir:=String(EstrLen(pv))
  605.                     StrCopy(addact.currentdir,pv,ALL)
  606.                     IF Even(EstrLen(pv))
  607.                         pos:=pos+EstrLen(pv)+2
  608.                     ELSE
  609.                         pos:=pos+EstrLen(pv)+1
  610.                     ENDIF
  611.                     CopyMem(node,addact.node,SIZEOF ln)
  612.                     AddTail(mywvbase.adractionlist,addact.node)
  613.                     nn:=p_GetNumNode(mywvbase.adractionlist,addact.node)
  614.                     IF nn=0
  615.                         list:=mywvbase.adractionlist
  616.                         list.head:=addact.node
  617.                         node.pred:=0
  618.                     ENDIF
  619.                     IF node THEN Dispose(node)
  620.                 CASE ID_DEFA
  621.                     pos:=pos+4
  622.                     defact:=Long(pos)
  623.             ENDSELECT
  624.         ENDIF
  625.     ENDFOR
  626.     Dispose(buf)
  627.     RETURN TRUE
  628. ENDPROC
  629. /**/
  630. /*"p_NoIcon(d,f)"*/
  631. PROC p_NoIcon(d,f) 
  632.     DEF noicon[256]:STRING
  633.     DEF do[256]:STRING
  634.     DEF fi[256]:STRING
  635.     StringF(do,'\s',d)
  636.     StringF(fi,'\s',f)
  637.     AddPart(do,'',256)
  638.     StringF(noicon,'\s\s.info',do,fi)
  639.     IF (FileLength(noicon))=-1 THEN RETURN TRUE
  640.     RETURN FALSE
  641. ENDPROC
  642. /**/
  643. /*"p_GetIconInfo(num)"*/
  644. PROC p_GetIconInfo(num)
  645.     DEF a:PTR TO ln
  646.     DEF idtype,icname=NIL,icstr[80]:STRING,pv[256]:STRING
  647.     DEF fpart,pos,lock,dl
  648.     DEF e:PTR TO execbase,l:PTR TO lib,r
  649.     e:=execbase
  650.     l:=e
  651.     IF l.version>=39
  652.         IF workbenchbase:=OpenLibrary('workbench.library',0)
  653.             a:=p_GetAdrNode(mywvbase.adractionlist,num)
  654.             idtype:=GetIDType(a.name)
  655.             icname:=GetIconName(idtype)
  656.             IF icname
  657.                 StringF(icstr,'\s\s',icdir,icname)
  658.                 fpart:=FilePart(icstr)
  659.                 pos:=InStr(icstr,fpart,0)
  660.                 MidStr(pv,icstr,0,pos)
  661.                 IF lock:=Lock(pv,-2)
  662.                     dl:=DupLock(lock)
  663.                     lock:=UnLock(lock)
  664.                     r:=p_WBInfo(dl,icstr,screen)
  665.                     IF r=0 THEN EasyRequestArgs(0,[20,0,0,get_WhatView_string(MSGWVPREFS_REQ_NOICON),get_WhatView_string(MSGWHATVIEW_COMASS_GAD)],0,0)
  666.                     IF dl THEN UnLock(dl)
  667.                 ENDIF
  668.             ELSE
  669.                 EasyRequestArgs(0,[20,0,0,get_WhatView_string(MSGWVPREFS_REQ_NODEFICON),get_WhatView_string(MSGWHATVIEW_COMASS_GAD)],0,0)
  670.             ENDIF
  671.             IF workbenchbase THEN CloseLibrary(workbenchbase)
  672.         ELSE
  673.             EasyRequestArgs(0,[20,0,0,get_WhatView_string(MSGERWHATVIEW_ER_WORKBENCHLIB),get_WhatView_string(MSGWHATVIEW_COMASS_GAD)],0,0)
  674.         ENDIF
  675.     ELSE
  676.         EasyRequestArgs(0,[20,0,0,'OS 3.0','Ok'],0,0)
  677.     ENDIF
  678. ENDPROC
  679. /**/
  680. /*"p_WBInfo(l (A0),name (A1),s (A2))"*/
  681. PROC p_WBInfo(l,name,s:PTR TO screen)
  682.     DEF ret
  683.     DEF n[80]:STRING
  684.     StrCopy(n,name,ALL)
  685.     MOVE.L l,A0
  686.     MOVE.L name,A1
  687.     MOVE.L s,A2
  688.     MOVE.L workbenchbase,A6
  689.     JSR    -$5A(A6)
  690.     MOVE.L D0,ret
  691.     RETURN ret
  692. ENDPROC
  693. /**/
  694. /*"beginWait(win,waitRequest)"*/
  695. PROC beginWait(win, waitRequest)
  696.  InitRequester(waitRequest)
  697.  IF Request(waitRequest, win)
  698.   RETURN TRUE
  699.  ELSE
  700.   RETURN FALSE
  701.  ENDIF
  702. ENDPROC
  703. /**/
  704. /*"endWait(win,waitRequest)"*/
  705. PROC endWait(win, waitRequest)
  706.  EndRequest(waitRequest, win)
  707. ENDPROC
  708. /**/
  709.  
  710. /**/
  711. /*"main()"*/
  712. PROC main() HANDLE 
  713.     DEF testmain
  714.     tattr:=['topaz.font',8,0,0]:textattr
  715.     p_DoReadHeader({banner})
  716.     localebase:=OpenLibrary('locale.library',0)
  717.     open_WhatView_catalog(NIL,NIL)
  718.     GetVar('WVICDEF',icdir,256,GVF_GLOBAL_ONLY)
  719.     StrCopy(defdir,'Sys:',ALL)
  720.     AddPart(icdir,'',256)
  721.     IF (testmain:=p_OpenLibraries())<>ER_NONE THEN Raise(testmain)
  722.     IF (testmain:=p_SetUpScreen())<>ER_NONE THEN Raise(testmain)
  723.     IF (testmain:=p_InitwpWindow())<>ER_NONE THEN Raise(testmain)
  724.     IF (testmain:=p_InitWVAPP())<>ER_NONE THEN Raise(testmain)
  725.     IF (FileLength('Env:Whatview.prefs'))<>-1 THEN p_ReadPrefsFile('env:whatview.prefs')
  726.     p_SortList(mywvbase.adridlist)
  727.     p_SortList(mywvbase.adractionlist)
  728.     IF (testmain:=p_OpenwpWindow())<>ER_NONE THEN Raise(testmain)
  729.     REPEAT
  730.         p_LookAllMessage()
  731.     UNTIL reelquit=TRUE
  732.     Raise(ER_NONE)
  733. EXCEPT
  734.     IF wp_window THEN p_RemwpWindow()
  735.     IF mywvbase THEN p_RemWVAPP()
  736.     IF screen THEN p_SetDownScreen()
  737.     p_CloseLibraries()
  738.     SELECT exception
  739.         CASE ER_INTUITIONLIB; WriteF(get_WhatView_string(MSGERWHATVIEW_ER_INTUITIONLIB))
  740.         CASE ER_GADTOOLSLIB;  WriteF(get_WhatView_string(MSGERWHATVIEW_ER_GADTOOLSLIB))
  741.         CASE ER_GRAPHICSLIB;  WriteF(get_WhatView_string(MSGERWHATVIEW_ER_GRAPHICSLIB))
  742.         CASE ER_WHATISLIB;    WriteF(get_WhatView_string(MSGERWHATVIEW_ER_WHATISLIB))
  743.         CASE ER_ASLLIB;       WriteF('Asl.library ??\n')
  744.         CASE ER_LOCKSCREEN; WriteF(get_WhatView_string(MSGERWHATVIEW_ER_LOCKSCREEN))
  745.         CASE ER_VISUAL;     WriteF(get_WhatView_string(MSGERWHATVIEW_ER_VISUAL))
  746.         CASE ER_CONTEXT;    WriteF(get_WhatView_string(MSGERWHATVIEW_ER_CONTEXT))
  747.         CASE ER_MENUS;      WriteF(get_WhatView_string(MSGERWHATVIEW_ER_MENUS))
  748.         CASE ER_GADGET;     WriteF(get_WhatView_string(MSGERWHATVIEW_ER_GADGET))
  749.         CASE ER_WINDOW;     WriteF(get_WhatView_string(MSGERWHATVIEW_ER_WINDOW))
  750.     ENDSELECT
  751.     close_WhatView_catalog()
  752.     IF localebase THEN CloseLibrary(localebase)
  753. ENDPROC
  754. /**/
  755.